package com.quasar.hpatient.api;

import com.quasar.hpatient.bean.comm_album.AlbumPhotoBean;
import com.quasar.hpatient.bean.comm_login.LoginBean;
import com.quasar.hpatient.bean.comm_regist.RegistBean;
import com.quasar.hpatient.bean.home_all.AllNetBean;
import com.quasar.hpatient.bean.home_assay_single.SingleItemBean;
import com.quasar.hpatient.bean.home_bloodpressure.BloodpressureItemBean;
import com.quasar.hpatient.bean.home_bloodsugar.BloodsugarItemBean;
import com.quasar.hpatient.bean.home_health.HealthBean;
import com.quasar.hpatient.bean.home_heartrate.HeartrateItemBean;
import com.quasar.hpatient.bean.home_inspection.CalendarAllBean;
import com.quasar.hpatient.bean.home_inspection.CalendarBPBean;
import com.quasar.hpatient.bean.home_inspection.CalendarBSBean;
import com.quasar.hpatient.bean.home_inspection.CalendarBean;
import com.quasar.hpatient.bean.home_inspection.CalendarHTBean;
import com.quasar.hpatient.bean.home_inspection.CalendarTBean;
import com.quasar.hpatient.bean.home_inspection.CalendarULBean;
import com.quasar.hpatient.bean.home_inspection.InspectionBean;
import com.quasar.hpatient.bean.home_medicine.CalendarDoseBean;
import com.quasar.hpatient.bean.home_medicine.MedicineTodayBean;
import com.quasar.hpatient.bean.home_medicine_record.MedicineRecoedBean;
import com.quasar.hpatient.bean.home_temperature.TemperatureItemBean;
import com.quasar.hpatient.bean.home_urinevolume.UrinevolumeItemBean;
import com.quasar.hpatient.bean.mine_case.MineCaseBean;
import com.quasar.hpatient.bean.mine_file.FileBagBean;
import com.quasar.hpatient.bean.patient.PatientInfoBean;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import lib.quasar.base.http.HttpResult;
import lib.quasar.db.table.User;
import okhttp3.RequestBody;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;

/**
 * description 网络接口
 * created by kalu on 2016/11/12 11:56
 */
public interface HttpService {

    @Multipart
    @POST("api")
    Observable<HttpResult<LoginBean>> login(@Part("datas") RequestBody datas);

    //获取患者信息
    @Multipart
    @POST("api")
    Observable<HttpResult<PatientInfoBean>> getUserInfo(@Part("datas") RequestBody datas);


    //获取历史聊天信息
    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> getHistoryChatInfo(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<RegistBean>> regist(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> modifyPassword(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> resetPassword(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> compileInfo(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<InspectionBean>> assayList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarHTBean>>> schemeHTList(@Part("datas") RequestBody datas);
    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarBean>>> schemeList(@Part("datas") RequestBody datas);
    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarAllBean>>> schemeAllList(@Part("datas") RequestBody datas);
    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarULBean>>> schemeULList(@Part("datas") RequestBody datas);
    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarBPBean>>> schemeBPList(@Part("datas") RequestBody datas);
    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarTBean>>> schemeTList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarDoseBean>>> schemeDoseList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<CalendarBSBean>>> schemeBSList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveAssayRecord(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<AlbumPhotoBean>>> uploadPhoto(@Part("datas") RequestBody datas, @PartMap Map<String, RequestBody> params);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> pullAssayPhoto(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> deletePhoto(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<SingleItemBean>>> assaySingle(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveTemperature(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<HashMap<String, ArrayList<TemperatureItemBean>>>> temperatureList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<HashMap<String, ArrayList<TemperatureItemBean>>>>> temperatureListMulit(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveBloodpressure(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<HashMap<String, ArrayList<BloodpressureItemBean>>>> bloodpressureList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<HashMap<String, ArrayList<BloodpressureItemBean>>>>> bloodpressureListMulit(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveUrinevolume(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<HashMap<String, ArrayList<UrinevolumeItemBean>>>> urinevolumeList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<HashMap<String, ArrayList<UrinevolumeItemBean>>>>> urinevolumeListMulit(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveBloodsugar(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<HashMap<String, ArrayList<BloodsugarItemBean>>>> bloodsugarList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<HashMap<String, ArrayList<BloodsugarItemBean>>>>> bloodsugarListMulit(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveHeartrate(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<HashMap<String, ArrayList<HeartrateItemBean>>>> heartrateList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<HashMap<String, ArrayList<HeartrateItemBean>>>>> heartrateListMulit(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<com.quasar.hpatient.bean.home_medicine.MedicineBean>> medicineList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveMedicine(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<MedicineRecoedBean>> medicineRecordList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<MedicineTodayBean>> medicineMessage(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<com.quasar.hpatient.bean.doctor.DoctorBean>>> doctorList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> applyFriend(@Part("datas") RequestBody datas);


    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> saveEvent(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<InspectionBean.EventBean>>> listEvent(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<AllNetBean>> listAll(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Map<String, HealthBean>>> listHealth(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<InspectionBean.DoctorBean>>> assayDoctorList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Object>> uploadData(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<Map<String, List<FileBagBean>>>> fileBagList(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<User>> mineInfo(@Part("datas") RequestBody datas);

    @Multipart
    @POST("api")
    Observable<HttpResult<List<MineCaseBean>>> mineCaseList(@Part("datas") RequestBody datas);

}